1. Field of the Invention
The present invention relates to generating an identifier having a specified format and uniquely identifying a storage device from data associated with a storage device but having a different format.
2. Description of the Related Arts
Computing devices or computing systems conventionally use a bus, such as a peripheral bus, to couple a processor to other devices such as storage devices, network controllers, input devices or output devices. The bus communicates data and/or commands between the processor and other devices coupled to the bus. In different computing devices, different command formats may be used to communicate with devices attached to the bus. For example, when accessing a hard disk, commands may be formatted using the AT Attachment (“ATA”) standard or Small Computer System Interface (“SCSI”) standard.
Commonly, multiple devices are attached to the bus, so each device is generally associated with a unique identifier, allowing the processor or another device to use the unique identifier to access a particular device. However, generation of such a unique identifier is dependent on characteristics of the device for which the unique identifier is generated. For example, a device using the SCSI standard is generally associated with a unique identifier having a specified format that is assigned by the device manufacturer. For example, a SCSI device includes a unique identifier that is an 8-byte value derived from a 3-byte Organizationally Unique Identifier (“OUI”) that is obtained from the Institute of Electrical and Electronics Engineers (“IEEE”) Registration Authority. The OUI is subsequently included in the 8-byte unique identifier to uniquely identify the device vendor or manufacturer. The remaining 5 bytes of the unique identifier allow the manufacturer or vendor to assign a globally unique identifier to a particular device. Hence, upon receiving a SCSI formatted identification command, the unique identifier is communicated from the device to the processor.
However, computing devices may include devices designed according to standards other than SCSI. These non-SCSI devices are frequently associated with identifiers having a different format than the SCSI-compliant unique identifiers described above. The different formatting between SCSI devices and other devices makes it difficult for a processor to efficiently communicate with multiple devices each associated with a different standard. For example, Serial Advanced Technology Attachment (“SATA”) storage devices are frequently used in computing devices due to their lower cost. Unlike SCSI devices, SATA storage devices do not frequently include an 8-byte unique identifier, making it difficult for a process executed by a processor and using an 8-byte unique identifier, or other specified identifier format, to identify and communicate with a SATA storage device.
However, SATA devices include a manufacturer-assigned ASCII identification string which includes a vendor identifier, a disk type identifier and an ATA serial number. However, this ASCII identification string may have a different format than the identifier format used by an executing process to uniquely identify devices, preventing unique identification of a SATA device by the executing process. For example, an executing process may use the SCSI standard for data communication with devices, so the executing process uses an 8-byte unique identifier, or another identifier having a specified format, to exchange data with a device. However, because the ASCII identification string and ATA serial number included in the SATA device have a different format, they cannot be used by the executing process to uniquely identify the SATA device.